Методы расширения двумерных динамических массивов

function Col<T>(Self: array [,] of T; k: integer): array of T;
        k-тый столбец двумерного массива
function ColCount<T>(Self: array [,] of T): integer;
        Количество столбцов в двумерном массиве
function Cols<T>(Self: array [,] of T): sequence of sequence of T;
        Возвращает последовательность столбцов двумерного массива
function ColSeq<T>(Self: array [,] of T; k: integer): sequence of T;
        k-тый столбец двумерного массива как последовательность
function ConvertAll<T, T1>(Self: array [,] of T; converter: T->T1): array [,] of T1;
        Преобразует элементы двумерного массива и возвращает преобразованный массив
function ConvertAll<T, T1>(Self: array [,] of T; converter: (T,integer,integer)->T1): array [,] of T1;
        Преобразует элементы двумерного массива и возвращает преобразованный массив
function ElementsByCol<T>(Self: array [,] of T): sequence of T;
        Возвращает по заданному двумерному массиву последовательность его элементов по столбцам
function ElementsByRow<T>(Self: array [,] of T): sequence of T;
        Возвращает по заданному двумерному массиву последовательность его элементов по строкам
function ElementsWithIndices<T>(Self: array [,] of T): sequence of (T, integer, integer);
        Возвращает по заданному двумерному массиву последовательность (a[i,j],i,j)
procedure Fill<T>(Self: array [,] of T; f: (integer,integer) ->T);
        Заполняет элементы двумерного массива значениями, вычисляемыми по некоторому правилу
procedure ForEach<T>(Self: array [,] of T; act: T -> ());
        Применяет действие к каждому элементу двумерного массива
procedure ForEach<T>(Self: array [,] of T; act: (T,integer,integer) -> ());
        Применяет действие к каждому элементу двумерного массива
function Indices<T>(Self: array [,] of T; cond: T -> boolean): sequence of (integer, integer);
        Возвращает по заданному двумерному массиву последовательность индексов элементов, удовлетворяющих заданному условию
function Print<T>(Self: array [,] of T; w: integer := 4): array [,] of T;
        Вывод двумерного массива, w - ширина поля вывода
function Print(Self: array [,] of real; w: integer := 7; f: integer := 2): array [,] of real;
        Вывод двумерного вещественного массива по формату :w:f
function Println<T>(Self: array [,] of T; w: integer := 4): array [,] of T;
        Вывод двумерного массива и переход на следующую строку, w - ширина поля вывода
function Println(Self: array [,] of real; w: integer := 7; f: integer := 2): array [,] of real;
        Вывод двумерного вещественного массива по формату :w:f и переход на следующую строку
function Row<T>(Self: array [,] of T; k: integer): array of T;
        k-тая строка двумерного массива
function RowCount<T>(Self: array [,] of T): integer;
        Количество строк в двумерном массиве
function Rows<T>(Self: array [,] of T): sequence of sequence of T;
        Возвращает последовательность строк двумерного массива
function RowSeq<T>(Self: array [,] of T; k: integer): sequence of T;
        k-тая строка двумерного массива как последовательность
procedure SetCol<T>(Self: array [,] of T; k: integer; a: array of T);
        Меняет столбец k двумерного массива на другой столбец
procedure SetCol<T>(Self: array [,] of T; k: integer; a: sequence of T);
        Меняет столбец k двумерного массива на другой столбец
procedure SetRow<T>(Self: array [,] of T; k: integer; a: array of T);
        Меняет строку k двумерного массива на другую строку
procedure SetRow<T>(Self: array [,] of T; k: integer; a: sequence of T);
        Меняет строку k двумерного массива на другую строку
procedure SwapCols<T>(Self: array [,] of T; k1, k2: integer);
        Меняет местами два столбца двумерного массива с номерами k1 и k2
procedure SwapRows<T>(Self: array [,] of T; k1, k2: integer);
        Меняет местами две строки двумерного массива с номерами k1 и k2
procedure Transform<T>(Self: array [,] of T; f: T->T);
        Преобразует элементы двумерного массива по заданному правилу
procedure Transform<T>(Self: array [,] of T; f: (T,integer,integer)->T);
        Преобразует элементы двумерного массива по заданному правилу